""""""

"""模块
每一个以扩展名.py结尾的python源码文件都是一个模块
"""

"""导入模块
模块导入的两种方式
1. import 模块名1, 模块名2
2. from  import  从某一个模块导入部分工具
"""

"""模块的搜索顺序
1. 当前目录有没有
2. 没有再搜索系统根目录
两个模块，同名函数，后导入的覆盖先导入的
"""

""" 导入时重名
解决方式1: 调用函数时
moudle1.open()
moudle2.open()
解决方式2: 指定别名
import math as foobar
from math import sqrt as foobar
"""

"""包
1.包是一个含有多个模块的特殊目录
2.目录下有一个特殊的文件__init__.py

好处
使用import 包名，可以一次性导入包中所有的模块

__init__.py
需要在改文件对外提供模块列表
from . import 模块1
from . import 模块2
"""

"""发布模块
1. 创建 setup.py
from distutils.core import setup
setup(name="sn_message",  # 包名
      version="1.0",  # 版本
      description="sn's 发送和接收消息模块",  # 描述信息
      long_description="完整的发送和接收消息模块",  # 完整描述信息
      author="sn",  # 作者
      author_email="sn@qq.com",  # 作者邮箱
      url="www.sn.com",  # 主页
      py_modules=["sn_message.send_message",
                  "sn_message.receive_message"])

2. 构建模块
python3 setup.py build

3.生成发布压缩包
python3 setup.py sdist

安装模块
tar -zxvf sn_message-1.0.tar.gz 
python3 setup.py install

卸载模块
cd /usr/local/lib/python3.5/dist-packages/
rm -r hm_message*
"""


"""常用模块
"""
"""sys
import sys
print(sys.argv)  #传递给Python解释器的参数, ['E:/Workspace/python/python/3.面向对象/7.模块和包.py']
print(sys.modules) #s将模块名映射到模块
print(sys.path)
print(sys.platform) # win32, 平台标识符
sys.stdin  #标准输入流
sys.stdout  #标准输出流
sys.stderr  #标准输入流
#sys.exit() #标准错误流
"""

"""os
import os
# 模块os让你能够访问多个操作系统服务
print(os.environ) #包含环境变量的映射
#print(os.system("ipconfig"))  #在子shell中执行操作系统命令
print(os.sep) # \  路径中的分隔符
print(os.pathsep) # ;  分割不同路径的分隔符
print(os.linesep) #行分隔符
print(os.urandom(10)) #b'\x83\xd4\xc5\xfb\x07w\xec\xf8.\xbe'
"""
# 打开360浏览器
#os.system(r'C:\Users\SN\AppData\Roaming\360se6\Application\360se.exe')
#os.startfile(r'C:\Users\SN\AppData\Roaming\360se6\Application\360se.exe')
#import  webbrowser
#webbrowser.open('http://www.sina.com.cn')


"""time"""
import time
# 将时间元祖转为字符串
#print(time.asctime()) #Sun Dec  8 15:14:54 2019
# 将秒数转换为表示当地时间的日期元组
#print(time.localtime()) #time.struct_time(tm_year=2019, tm_mon=12, tm_mday=8, tm_hour=15, tm_min=15, tm_sec=10, tm_wday=6, tm_yday=342, tm_isdst=0)
# 将时间元组转换为当地时间
#print(time.mktime(time.localtime())) #1575789349.0
# 休眠3秒
#time.sleep(3)
# 当前时间
#print(time.time()) #1575789546.8461812

"""random
import random
print(random.random()) #0.6536761865865703, 返回一个0~1（含）的随机实数
print(random.getrandbits(7)) #110, 以长整数方式返回n个随机的二进制位
print(random.uniform(1, 10)) #4.900008486785426, 返回一个a~b（含）的随机实数
print(random.randrange(1, 10, 2)) #7, 从range(start, stop, step)中随机地选择一个数
print(random.choice([1, 2, 3]))#2, 从序列中随机地选择一个元素
a = [1, 2, 3]
random.shuffle(a) #就地打乱序列
print(a) #[2, 3, 1]
print(random.sample(a, 2)) #[1, 3], 从序列中随机地选择2个值不同的元素
"""

"""shelve
将数据存储到文件中
"""
# import shelve
# s = shelve.open("test.txt")
# s['x'] = ['a', 'b', 'c']
# s['x'].append('d')
# print(s['x']) ['a', 'b', 'c']

# s = shelve.open("test.txt")
# s['x'] = ['a', 'b', 'c']
# temp = s['x']
# temp.append('d')
# s['x'] = temp
# print(s['x']) ['a', 'b', 'c', 'd']



